#include "head.h"


// 入队，添加文件描述符
int enQueue(queue_t *pQueue, int net_fd)
{
    // 构建新结点
    node_t *pNew = (node_t *)calloc(1, sizeof(node_t));
    pNew->net_fd = net_fd;  // 要通信的net_fd赋值给新结点

    // 队列为空
    if(pQueue->size == 0)
    {
        pQueue->head = pNew;
        pQueue->tail = pNew;
    }
    else
    {
        pQueue->tail->pNext = pNew;
        pQueue->tail = pNew;
    }
        
    // 队列大小加1
    pQueue->size++;

    return 0;
}

// 出队，从队列中移除
int deQueue(queue_t *pQueue)
{
    // 队列为空
    if(pQueue->size == 0)
    {
        return -1;
    }

    node_t *p = pQueue->head;
    pQueue->head = p->pNext;

    // TODO:先遗留一个问题 队列现在为0还是1
    if(pQueue->size == 0)
    {
        pQueue->tail = NULL;
    }

    // 队列大小减一
    pQueue->size--;
    // 不要忘记free需要移除的节点
    free(p);
    return 0;
}

